//
//  BFileManagerTool.h
//  Bullet
//
//  Created by  on 2019/9/17.
//  Copyright © 2019 . All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface BFileManagerTool : NSObject

- (NSString *)documentPath;
- (NSString *)cachePath;

/**
 文件存储路径

 @return 主路径
 */
- (NSString *)fileSaveCachePath;

/**
 获取文件夹路径

 @param groupName 文件夹名称
 @return 返回路径
 */
- (NSString *)pathWithGroup:(NSString *)groupName;

/**
 将文件从下载缓存中保存到自定义路径上

 @param path 下载缓存
 @param group 自定义缓存文件夹
 @param name 文件名
 */
- (void)saveFileWithUrl:(NSString *)path group:(NSString *)group name:(NSString *)name;

/**
 url转文件夹名称

 @param urlStr url
 @return 文件夹名称
 */
- (NSString *)folderNameFormUrl:(NSString *)urlStr;

/**
 根据weburl获取视频本地缓存路径

 @param urlStr weburl
 @return 本地缓存路径
 */
- (NSString *)videoCachePathForUrl:(NSString *)urlStr;

/// 根据weburl获取视频本地缓存路径
/// @param urlStr weburl
/// @param preload YES:15秒片段 NO ：完整视频
- (NSString *)videoCachePathForUrl:(NSString *)urlStr preload:(BOOL)preload;


- (void)createPath:(NSString *)createP;
/**
 文件是否存在

 @param path 文件路径
 @return YES:存在
 */
- (BOOL)fileIsExists:(NSString *)path;

/**
 获取文件路径

 @param imageName 文件名
 @param groupName 文件夹名
 @return 返回路径
 */
- (NSString *)getPathWithFileName:(NSString *)imageName type:(NSString *)groupName;

/**
 删除路径下指定文件

 @param groupName 子文件夹
 @param name 文件名
 */
- (void)deleteFileType:(NSString *)groupName name:(NSString *)name;

/**
 删除视频缓存所有缓存文件
 */
- (void)deleteVideoCacheFolder:(void(^)(void))complete;

/// 清理用户cache文件夹
- (void)clearAllCache:(void(^)(void))complete;

/**
 删除

 @param folderPath 文件夹路径
 */
- (void)deleteCacheFolder:(NSString *)folderPath;

/**
 沙盒缓存所有缓存文件的大小

 @return 返回大小
 */
- (unsigned long long)fileSize:(NSString *)path;

/// 获取用户缓存大小
- (unsigned long long)userCacheSize;

/**
 获取手机剩余内存空间

 @return 返回剩余内存空间
 */
- (unsigned long long)freeDiskSpaceInBytes;

- (NSString *)recordingVideoPath;
- (NSString *)recordingTmpPicDirector;
- (NSString *)recordingVideoPixImgPath:(CGFloat)duration;
- (void)clearRecodingVideoPixTmpImg;
- (UIImage *)recordingVideoImagFrame:(CGFloat)frame;

- (NSString *)recordingVideoMP4Path;
- (NSString *)recordingPreVideoMP4Path;
- (NSString *)recordingVideoCoverPath;
- (void)clearRecordVideoPath;

- (long long)videoSizeWithPath:(NSString *)path;

/**
 构造函数
 
 @return 返回单例类
 */
+ (instancetype)tool;

@end

NS_ASSUME_NONNULL_END
